This page last changed on Oct 14, 2006 by juanca.
  1. Escritura
    canal <- [e1,..,en]

    escribe la tupla al espacio del canal dado. La escritura sobreescribe el contenido del canal.

  2. Escritura con bloqueo
    canal ! [e1,..,en]

    escribe la tupla al espacio del canal dado y bloquea el proeceso hasta que la tupla sea retirada. La escritura sobreescribe el contenido del canal.

  3. Escritura aditiva
    canal += [e1,..,en]

    escribe la tupla al espacio del canal dado. Agrega la tupla al canal sin sobreescribir el contenido anterior.

  4. Lectura
    canal -> [e1,..,en]

    bloquea el proceso hasta que una tupla que concuerde esté disponible en el espacio del canal dado , la lee sin retirarla del espacio, y desbloquea el proceso.

  5. Lectura con retiro
    canal ? [e1,..,en]

    es tal como la lectura simple excepto que la tupla es retirada del espacio.

  6. Tamaño. La expresión
    canal#[V]

    también

    canal#V

    retorna el número de tuplas en el canal. Esta expresión nunca bloquea.

  7. Repetición. Una instrucción precedida del símbolo ++ se repite indefinidamente. El símbolo especial <> detiene la repetición en curso (es equivalente a la instrucción break en Java.
  8. Asignación
    V = expresión

    es equivalente a:

    @<-[expresión].@?V

    como se explica más adelante.
    Se permite también la forma

    V::R=expresion

    , la cual es equivalente a

    @<-[expresión].@?V::R


  9. Llamada a función
    nombre[e1,...,en]

    . Llama a la función identificada con el átomo nombre.

Expresiones de Escritura

En todas las instrucciones de escritura las expresiones que conforman la tupla escrita deben evaluar a un átomo.

Expresiones de lectura

Las instrucciones de lectura pueden introducir una única variable en cada expresión de la tupla escrita, por ejemplo:

sensor?[Valor >= 10 && Valor <= 20, Hora]
Lecturas parciales

También es posible colocar la cola de una tupla leida en una variable:

lista?[Primero]::Resto
lista<-Resto

Si la variable para la cola se substituye por el símbolo de lectura, el efecto es el mismo que el del ejemplo anterior:

lista?[Primero]::<-

lee el primer elemento de la tupla obtenida del canal, y coloca el resto en el canal, sin bloquear el proceso.

Tuplas vacías

Es posible escribir y leer tuplas vacías:

c![]
c->[]
Instrucciones Vacías

Se permiten las instrucciones vacías. Es buen estilo usar la expresión "()" para dejar la intención clara.

++(c?_.()|c#[_==0].<>) // vaciar un canal
Document generated by Confluence on Oct 04, 2010 11:25